package com.xwq.commons.base;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @author huangguizhao
 * 抽象类：提供基本的实现
 */
public  abstract  class BaseServiceImpl<T> implements IBaseService<T>{


    public  abstract  IBaseDao<T> getBaseDao();

    public int deleteByPrimaryKey(Long id) {
        return getBaseDao().deleteByPrimaryKey(id);
    }

    public int insert(T t) {
        return getBaseDao().insert(t);
    }

    public int insertSelective(T t) {
        return getBaseDao().insertSelective(t);
    }

    public T selectByPrimaryKey(Long id) {
        return getBaseDao().selectByPrimaryKey(id);
    }

    public int updateByPrimaryKeySelective(T t) {
        return getBaseDao().updateByPrimaryKeySelective(t);
    }

    public int updateByPrimaryKeyWithBLOBs(T t) {
        return getBaseDao().updateByPrimaryKeyWithBLOBs(t);
    }

    public int updateByPrimaryKey(T t) {
        return getBaseDao().updateByPrimaryKey(t);
    }

    public List<T> list() {
        return getBaseDao().list();
    }
        public PageInfo<T> pageInfoTProduct(Integer pageIndex, Integer pageSize) {
            //设置分页信息
            PageHelper.startPage(pageIndex, pageSize);
            //获取到集合信息
            List<T> list=this.list();  //相当于调用了 BaseServiceImpl中的list()方法，因为受到了插件影响自动添加了limit
            //其实插件对mybatis执行流程进行了增强，添加了limit以及count查询，属于物理分页
            //返回分页对象
            PageInfo<T> pageInfo=new PageInfo<T>(list,3); //后面那个参数指的是导航栏的数字数目
            return pageInfo;
        }
    }

